1. Field of the Invention
The present invention relates to the field of computers. More specifically, the present invention relates to computer architecture.
2. Description of the Related Art
In general, a floating point arithmetic path includes structures that perform arithmetic computations, normalizing computations, rounding computations, and formatting computations. Exemplary arithmetic computations include Booth encoding for multiplication, and aligning and adding for addition. Numerous structures implement these computations, such as Booth multiplexers, shifters, multiplexers, and Wallace trees. After the arithmetic computations, normalizing computations make adjustments to the mantissa of the generated value until the most significant bit is a non-zero value, and then make corresponding adjustments to the coefficient. Since a characteristic of arithmetic computations with floating-point representations is rounding error, normalization of the computed value is generally followed by rounding computations. The rounding computations determine whether the normalized floating-point value requires rounding, and, if so, rounds the value (i.e., increments the value).
In some sequences of operations, a value generated by a first arithmetic operation will be utilized as an operand in a second arithmetic operation (i.e., the second arithmetic operation is dependent on the first arithmetic operation). For example, assume the following two arithmetic operations:A*B=C  1)D*C=F  2)The first arithmetic operation generates a value C, which is the multiplicand in the second arithmetic operation. The second arithmetic operation is dependent upon the result of the first arithmetic operation. Assume the first arithmetic operation involves performing arithmetic computations, normalizing computations, and rounding computations. All of these computations are performed for the first arithmetic operation to generate C, which is then supplied for execution of the second arithmetic operation. Hence, execution of the second arithmetic operation is delayed until the first operation generates the value C, and supplies the result for the second arithmetic operation. Accordingly, a technique is desired that reduces the stall of an arithmetic operation dependent on a value generated from another arithmetic operation.